package com.yao.sort;

/**
 * 冒泡排序
 * 时间复杂度：O(n^2)
 * @author yaoym
 *
 */
public class BubbleDemo {

	/**
	 *  冒泡排序
	 *	1.比较相邻两个元素，符合条件则交换它们；
	 *	2.对每一对相邻的元素重复步骤1，直到最后一个元素；
	 *	3.持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
	 *
	 * @param up  true：升序
	 * @param arr
	 */
	public static void sort(Integer[] arr, boolean up) {

		for (int j = 0; j < arr.length - 1; j++) {
			for (int i = 0; i < arr.length - 1; i++) {
				// 交换位置
				if (up ? arr[i] > arr[i + 1] : arr[i] < arr[i + 1]) {
					int temp = arr[i + 1];
					arr[i + 1] = arr[i];
					arr[i] = temp;
				}
			}
		}

	}

	public static void main(String[] args) {
		Integer[] arr = InitData.sortData(10);

		System.out.println("--冒泡排序前--");
		for (int i : arr) {
			System.out.print(i + "\t");
		}
		System.out.println();

		sort(arr, true);

		System.out.println("--冒泡排序后--");
		for (int i : arr) {
			System.out.print(i + "\t");
		}
	}
}
